/*
 * Copyright (C), 2002-2017, 南京苏宁软件技术有限公司
 * FileName: AreaTaskService.java
 * Author:   10070706
 * Date:     2017年1月4日 下午3:24:23
 * Description: //模块目的、功能描述      
 * History: //修改记录
 * <author>      <time>      <version>    <desc>
 * 修改人姓名             修改时间            版本号                  描述
 */
package com.suning.sawp.intf.mainpushnew;

import java.util.List;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;

import com.suning.sawp.dto.common.QueryResult;
import com.suning.sawp.vo.mainpushnew.AreaTaskDetailVo;
import com.suning.sawp.vo.mainpushnew.AreaTaskModelDetailVo;
import com.suning.sawp.vo.mainpushnew.AreaTaskStoreDetailVo;
import com.suning.sawp.vo.mainpushnew.AreaTaskVo;

/**
 * 功能简述: 大区任务相关的查询，修改，分配服务<br>
 *
 * @author 10070706 陈辉
 */
public interface AreaTaskService {

    /**
     * 
     * 功能描述: 根据工号查询大区人员表，得到对应的5位大区编码<br>
     * 
     * @param userId
     * @return
     */
    String query5DisCodeByUserId(String userId);

    /**
     * 
     * 功能描述: 大区任务管理列表页<br>
     *
     * @param disCode
     * @param taskTopic
     * @param month
     * @param pageNo
     * @param pageLimit
     * @return
     */
    QueryResult<AreaTaskVo> queryAreaTaskInfo(String disCode, String taskTopic, String month, Integer pageNo,
            Integer pageLimit);

    /**
     * 
     * 功能描述: 查询大区任务完成情况<br>
     *
     * @param areaTaskIds
     * @return
     */
    XSSFWorkbook queryAreaSaleTaskCondition(Long... areaTaskIds);

    /**
     * 
     * 功能描述: 根据大区任务ID，查询大区主推任务信息，占比情况<br>
     *
     * @param id
     * @return
     */
    AreaTaskDetailVo queryAreaTaskDetailInfo(Long areaTaskId);

    /**
     * 
     * 功能描述: 根据大区任务ID，查询大区款式列表，已完成数，商品编码横置排列<br>
     *
     * @param areaTaskId
     * @param pageNo
     * @param pageLimit
     * @return
     */
    QueryResult<AreaTaskModelDetailVo> queryAreaTaskModelDetail(Long areaTaskId, Integer pageNo, Integer pageLimit);

    /**
     * 
     * 功能描述: 根据大区任务id，款式id查询当前款数的分配情况<br>
     *
     * @param areaTaskId
     * @param modelId
     * @return
     */
    List<AreaTaskStoreDetailVo> queryAreaTaskDistributeDetail(Long areaTaskId, Long modelId);

    /**
     * 
     * 功能描述: 修改目标台数，没有的需要新增<br>
     * 
     * 
     * @param areaTaskId
     * @param storeModelModify
     * @param flag true表示为前端页面逻辑，flase表示导入逻辑
     */
    void modifyStoreTargetNum(Long areaTaskId, List<AreaTaskStoreDetailVo> storeModelModify, Boolean flag);

    /**
     * 
     * 功能描述: 导出大区任务明细<br>
     *
     * @param areaTaskId
     */
    XSSFWorkbook exportAreaTaskInfo(Long areaTaskId);

    /**
     * 
     * 功能描述: 导入大区任务分配门店的情况<br>
     *
     * @param file
     * @param areaTaskId
     */
    void importAreaTaskDistribute(MultipartFile file, Long areaTaskId);

    /**
     * 
     * 功能描述: 计算大区任务下属门店个款数分配的总台数，并入库<br>
     * 
     * @param areaTaskId
     */
    void calAreaTaskAllStoreDistributeNum(Long areaTaskId);
}
